// pages/cart/index.js
// 添加收货地址
//  1.调用微信自带的获取收货地址的api
// 2.正常流程
      // 1.先调用获取用户对小程序的授权接口，有返回值
        // 2. 对权限scope进场判断
          //  scope 是undefinde 1.直接获取收货地址
          //  scope 是true  用户曾经点过用户权限
          // scope false  用户曾经取消授权

    import regeneratorRuntime from '../../lib/runtime/runtime.js';
    import {getSetting,OpenSetting,chooseAddress,showModal,showToast} from '../../utils/asyncWx.js'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    addreess: {},
    cart: {},
    // 全选状态，总价格，总数量
    isAllChecked: false,
    totalPrice:0,
    totalNum:0,
    hasGoods: false,
  },

  onShow(){
     let cart = wx.getStorageSync("cart") || {};
   this.setData({
     addreess: wx.getStorageSync("addreess") || {},
     cart: cart
    });
    this.setCart(cart);
  },
  // 添加收货地址
 async handleChooseAddress(){
  // 1. 获取用户对该应用的授权信息
    const resul1 = await getSetting();
    const scopeAddress = resul1.authSetting["scope.address"];
    if(scopeAddress === true || scopeAddress === undefined){
      // const result2 = await chooseAddress();

    }else{
      await OpenSetting();
    }
    const result2 = await chooseAddress();
    console.log(result2);
    // 1.3将数据存储在本地
    result2.all = result2.provinceName+result2.cityName+result2.countyName+result2.detailInfo;
    wx.setStorageSync("addreess", result2);
      
  //  wx.getSetting({
  //    success: (result1) => {
  //       console.log(result1)
  //       const scopeAddress = result1.authSetting["scope.address"];
  //       if(scopeAddress === true || scopeAddress === undefined){
  //         // 1.3 直接获取收货信息
  //         wx.chooseAddress({
  //           success: (result2) => {
  //             console.log(result2)
  //           },
  //         });  
  //       }else{
  //         // 2.1请用户打开授权界面
  //         wx.openSetting({
  //           success: (result3) => {
  //             wx.chooseAddress({
  //               success: (result4) => {
                  
  //               },
  //             });
                
  //           },
  //         });
            
  //       }      
  //    },

  //  });
      
  },
// 计算总价
setCart (cart){
  // 把对象转化为数组
  let cartArr = Object.values(cart);
  // every 循环数组，都返回true才返回true
  // let isAllChecked=cartArr.every(v => v.checked);
  let isAllChecked = true;
  // 2.计算总的价格
  let totalPrice = 0;
  let totalNum = 0;
  cartArr.forEach((e,i) =>{
    if(e.checked){
      totalPrice += e.goods_price * e.num;
      totalNum += e.num;
    }else{
      isAllChecked = false;
    }
  });
  // 判断一下购物车有没有数据
  isAllChecked = cartArr.length === 0 ? false : isAllChecked;
  const hasGoods = cartArr.length > 0 ? true : false;
  this.setData({cart,isAllChecked,totalPrice,totalNum,hasGoods});
  wx.setStorageSync("cart", cart);

},
// 单选
handleCartChecked(e){
   console.log(e)
  const {id} = e.currentTarget.dataset;
  // 获取购物车
  let {cart} = this.data;
  cart[id].checked=!cart[id].checked;
  // 把cart 重新设置回data中
  // 5.重新计算

  this.setCart(cart);
},
// 全选
handleAllChecke(){
  // 1. 获取data中的数据
  let {isAllChecked,cart} = this.data;
  // 2.取反
  isAllChecked=!isAllChecked;
  // 循环对象，
  for (const key in cart) {
    // 判断该属性是不是自己的
    if (cart.hasOwnProperty(key)) {
     cart[key].checked=isAllChecked;
    }
  };
  // 把cart传入setCart函数
  this.setCart(cart);
},
// 购物车数量
async handleCartNumEdit(e){
  console.log(e)
  const {id,operation} = e.currentTarget.dataset;
   let {cart} = this.data;
  //  3.判断是否删除
  if(cart[id].num === 1 && operation === -1 ){
  const res =  await showModal({content: '确定删除吗？'}); 
   if(res.confirm){
  //  删除属性
  delete cart[id];
  this.setCart(cart);
   }else{
     console.log('取消')
   }
  }else{
    cart[id].num+= operation;
    //  重新计算总价
    this.setCart(cart);
  }

},
// 结算按钮
async handlePay (){
  // 1.获取data中的地址
  const {addreess,cart} = this.data;
  const cartArr = Object.values(cart);
  let cartChecked = cartArr.some(v => v.checked);
  if(!addreess.all){
    await showToast({title: '您没有选择收货地址'});
  }else if(!cartChecked){
    // 不满足
    await showToast({title: '您没有选择商品'});
  }else{
    wx.navigateTo({
      url: '/pages/pay/index',
    });
      
  }
}

})